#!/usr/bin/env node

/**
 * 开发环境设置脚本
 * 确保 Mock 服务器依赖已安装并可以正常启动
 */

const { execSync, spawn } = require('child_process')
const fs = require('fs')
const path = require('path')

const mockServerPath = path.join(__dirname, '..', 'mock-server')
const packageJsonPath = path.join(mockServerPath, 'package.json')
const nodeModulesPath = path.join(mockServerPath, 'node_modules')

console.log('🔧 设置开发环境...')

// 检查 mock-server 目录是否存在
if (!fs.existsSync(mockServerPath)) {
  console.error('❌ mock-server 目录不存在')
  process.exit(1)
}

// 检查 package.json 是否存在
if (!fs.existsSync(packageJsonPath)) {
  console.error('❌ mock-server/package.json 不存在')
  process.exit(1)
}

// 检查依赖是否已安装
if (!fs.existsSync(nodeModulesPath)) {
  console.log('📦 安装 Mock 服务器依赖...')
  try {
    execSync('npm install', {
      cwd: mockServerPath,
      stdio: 'inherit',
    })
    console.log('✅ Mock 服务器依赖安装完成')
  } catch (error) {
    console.error('❌ Mock 服务器依赖安装失败:', error.message)
    process.exit(1)
  }
} else {
  console.log('✅ Mock 服务器依赖已存在')
}

// 检查 Mock 服务器是否可以启动
console.log('🧪 测试 Mock 服务器启动...')
try {
  const testProcess = spawn('node', ['server.js'], {
    cwd: mockServerPath,
    stdio: 'pipe',
  })

  let output = ''
  testProcess.stdout.on('data', (data) => {
    output += data.toString()
  })

  testProcess.stderr.on('data', (data) => {
    output += data.toString()
  })

  // 等待 2 秒检查启动状态
  setTimeout(() => {
    if (output.includes('Mock 服务器启动成功') || output.includes('listening')) {
      console.log('✅ Mock 服务器可以正常启动')
      testProcess.kill()
    } else {
      console.log('⚠️  Mock 服务器启动可能有问题，输出:')
      console.log(output)
      testProcess.kill()
    }
  }, 2000)
} catch (error) {
  console.error('❌ Mock 服务器测试失败:', error.message)
}

console.log('🎉 开发环境设置完成！')
console.log('')
console.log('📋 可用命令:')
console.log('  npm run dev              - 同时启动前端和 Mock 服务器')
console.log('  npm run dev:frontend-only - 仅启动前端')
console.log('  npm run mock:server       - 仅启动 Mock 服务器')
console.log('  npm run dev:debug         - 启动调试模式')
console.log('')
console.log('🌐 服务地址:')
console.log('  前端: http://localhost:8000')
console.log('  Mock API: http://localhost:3001/api')
console.log('  健康检查: http://localhost:3001/api/health')
